#include <iostream>

using namespace std;

const int N = 15;

int n;
int a[N];
bool st[N];
int ret;

void dfs(int pos)
{
	if(pos > n) 
	{
		ret++;
		return;
	}

	for(int i = 1; i <= n; i++)
	{
		if(st[i]) continue; // 当前 i 已经放过了
		if(st[a[i]]) return; // 剪枝

		st[i] = true; // 相当于放上i号成员
		dfs(pos + 1);
		st[i] = false;
	}
}

int main()
{
	cin >> n;
	for(int i = 1; i <= n; i++) cin >> a[i];

	dfs(1);

	cout << ret << endl;

	return 0;
}